Skip to content

Conversation

@rok
Copy link
Member

@rok rok commented Dec 7, 2021

No description provided.

@github-actions
Copy link

github-actions bot commented Dec 7, 2021

@github-actions
Copy link

github-actions bot commented Dec 7, 2021

⚠️ Ticket has not been started in JIRA, please click 'Start Progress'.

@lidavidm
Copy link
Member

lidavidm commented Dec 7, 2021

Thanks! Unfortunately I still get a lot of linker errors using the repro from JIRA, but at least the Abseil issues are eliminated. I think the remaining issues are just because of the order of libraries.

This is what CMake generates, which fails with linker errors:

/usr/bin/c++ -O3 -DNDEBUG  CMakeFiles/arrow_example.dir/example.cc.o -o arrow_example  /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow.a  /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow_flight.a  -pthread  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  -lrt  /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow_bundled_dependencies.a

The errors indicate libarrow_flight.a is missing symbols from libarrow.a and the bundled gRPC is missing symbols from OpenSSL.

This works:

/usr/bin/c++ -O3 -DNDEBUG  CMakeFiles/arrow_example.dir/example.cc.o -o arrow_example  /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow_flight.a  /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow.a  -pthread /home/lidavidm/Code/upstream/arrow-14708/install/lib/libarrow_bundled_dependencies.a  /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/x86_64-linux-gnu/libcrypto.so  -lrt

i.e. link libarrow_flight, then libarrow, then libarrow_bundled_dependencies, then OpenSSL.

Flipping the order of libraries in the CMakeLists.txt fixes the first issue, so I suppose this is user error, or we're missing some dependency expressed in CMake(?).

The installed ArrowFlightTargets.cmake does not declare arrow_static in INTERFACE_LINK_LIBRARIES - my CMake understanding is poor but perhaps we need to do so? (It is odd because arrow_static is in the STATIC_LINK_LIBS in flight/CMakeLists.txt.) Also, ArrowTargets.cmake declares OpenSSL as part of arrow_static's INTERFACE_LINK_LIBRARIES, but ArrowConfig.cmake does not do the same for arrow_bundled_dependencies.

@lidavidm
Copy link
Member

lidavidm commented Dec 7, 2021

This diff gets CMake to repeat libarrow.a after libarrow_flight.a, so we don't have to order the Arrow libraries ourselves in our "consumer" CMakeLists.txt:

diff --git a/cpp/src/arrow/flight/CMakeLists.txt b/cpp/src/arrow/flight/CMakeLists.txt
index 8a3228e50..846a420f9 100644
--- a/cpp/src/arrow/flight/CMakeLists.txt
+++ b/cpp/src/arrow/flight/CMakeLists.txt
@@ -170,7 +170,9 @@ add_arrow_lib(arrow_flight
               ${ARROW_FLIGHT_LINK_LIBS}
               STATIC_LINK_LIBS
               arrow_static
-              ${ARROW_FLIGHT_LINK_LIBS})
+              ${ARROW_FLIGHT_LINK_LIBS}
+              STATIC_INSTALL_INTERFACE_LIBS
+              arrow_static)
 
 foreach(LIB_TARGET ${ARROW_FLIGHT_LIBRARIES})
   target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_FLIGHT_EXPORTING)

And this additional diff, while questionable, fixes the rest of the link errors:

diff --git a/cpp/src/arrow/ArrowConfig.cmake.in b/cpp/src/arrow/ArrowConfig.cmake.in
index 6209baeec..750d3aba6 100644
--- a/cpp/src/arrow/ArrowConfig.cmake.in
+++ b/cpp/src/arrow/ArrowConfig.cmake.in
@@ -87,6 +87,10 @@ if(NOT (TARGET arrow_shared OR TARGET arrow_static))
       set_target_properties(
         arrow_static PROPERTIES INTERFACE_LINK_LIBRARIES
         "${arrow_static_interface_link_libraries};arrow_bundled_dependencies")
+      # Propagate dependencies like OpenSSL
+      set_target_properties(
+        arrow_bundled_dependencies PROPERTIES INTERFACE_LINK_LIBRARIES
+        "${arrow_static_interface_link_libraries}")
     endif()
   endif()
 endif()

@rok
Copy link
Member Author

rok commented Dec 7, 2021

Thanks @lidavidm I was gonna ask for ideas about the flight linking errors! I'll include your diffs and test.

@rok
Copy link
Member Author

rok commented Dec 8, 2021

@lidavidm I'm able to compile this locally now. I've also reduced the abseil dependencies (I think to a minimum).
Do we want further review on this?

@lidavidm
Copy link
Member

lidavidm commented Dec 8, 2021

@github-actions crossbow submit -g nightly

@github-actions
Copy link

github-actions bot commented Dec 8, 2021

Revision: f3745060a1982f3ee46705bec28df3830312a8b9

Submitted crossbow builds: ursacomputing/crossbow @ actions-1268

Task Status
almalinux-8-amd64 Github Actions
almalinux-8-arm64 TravisCI
amazon-linux-2-amd64 Github Actions
centos-7-amd64 Github Actions
centos-8-amd64 Github Actions
centos-8-arm64 TravisCI
conda-clean Azure
conda-linux-gcc-py36-cpu-r40 Azure
conda-linux-gcc-py36-cuda Azure
conda-osx-arm64-clang-py38 Azure
conda-osx-arm64-clang-py39 Azure
conda-osx-clang-py36-r40 Azure
conda-osx-clang-py37-r41 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py36-r40 Azure
debian-bookworm-amd64 Github Actions
debian-bookworm-arm64 TravisCI
debian-bullseye-amd64 Github Actions
debian-bullseye-arm64 TravisCI
debian-buster-amd64 Github Actions
debian-buster-arm64 TravisCI
example-cpp-minimal-build-static Github Actions
example-cpp-minimal-build-static-system-dependency Github Actions
homebrew-cpp Github Actions
homebrew-r-autobrew Github Actions
java-jars Github Actions
nuget Github Actions
python-sdist Github Actions
test-build-cpp-fuzz Github Actions
test-build-vcpkg-win Github Actions
test-conda-cpp Github Actions
test-conda-cpp-valgrind Azure
test-conda-python-3.10 Github Actions
test-conda-python-3.6 Github Actions
test-conda-python-3.6-pandas-0.23 Github Actions
test-conda-python-3.7 Github Actions
test-conda-python-3.7-hdfs-2.9.2 Github Actions
test-conda-python-3.7-hdfs-3.2.1 Github Actions
test-conda-python-3.7-kartothek-latest Github Actions
test-conda-python-3.7-kartothek-master Github Actions
test-conda-python-3.7-pandas-0.24 Github Actions
test-conda-python-3.7-pandas-latest Github Actions
test-conda-python-3.7-spark-v3.1.2 Github Actions
test-conda-python-3.8 Github Actions
test-conda-python-3.8-hypothesis Github Actions
test-conda-python-3.8-pandas-latest Github Actions
test-conda-python-3.8-pandas-nightly Github Actions
test-conda-python-3.8-spark-v3.2.0 Github Actions
test-conda-python-3.9 Github Actions
test-conda-python-3.9-dask-latest Github Actions
test-conda-python-3.9-dask-master Github Actions
test-conda-python-3.9-pandas-master Github Actions
test-conda-python-3.9-spark-master Github Actions
test-debian-10-cpp-amd64 Github Actions
test-debian-10-cpp-i386 Github Actions
test-debian-11-cpp-amd64 Github Actions
test-debian-11-cpp-i386 Github Actions
test-debian-11-go-1.15 Azure
test-debian-11-python-3 Azure
test-debian-c-glib Github Actions
test-debian-ruby Github Actions
test-fedora-33-cpp Github Actions
test-fedora-33-python-3 Azure
test-fedora-r-clang-sanitizer Azure
test-r-arrow-backwards-compatibility Github Actions
test-r-depsource-auto Azure
test-r-depsource-system Github Actions
test-r-devdocs Github Actions
test-r-gcc-11 Github Actions
test-r-install-local Github Actions
test-r-linux-as-cran Github Actions
test-r-linux-rchk Github Actions
test-r-linux-valgrind Azure
test-r-minimal-build Azure
test-r-offline-maximal Github Actions
test-r-offline-minimal Azure
test-r-rhub-debian-gcc-devel-lto-latest Azure
test-r-rhub-ubuntu-gcc-release-latest Azure
test-r-rocker-r-base-latest Azure
test-r-rstudio-r-base-4.1-centos7-devtoolset-8 Azure
test-r-rstudio-r-base-4.1-centos8 Azure
test-r-rstudio-r-base-4.1-focal Azure
test-r-rstudio-r-base-4.1-opensuse15 Azure
test-r-rstudio-r-base-4.1-opensuse42 Azure
test-r-ubuntu-21.04 Github Actions
test-r-versions Github Actions
test-skyhook-integration Github Actions
test-ubuntu-18.04-cpp Github Actions
test-ubuntu-18.04-cpp-release Github Actions
test-ubuntu-18.04-cpp-static Github Actions
test-ubuntu-18.04-python-3 Azure
test-ubuntu-18.04-r-sanitizer Azure
test-ubuntu-20.04-cpp Github Actions
test-ubuntu-20.04-cpp-14 Github Actions
test-ubuntu-20.04-cpp-17 Github Actions
test-ubuntu-20.04-cpp-bundled Github Actions
test-ubuntu-20.04-cpp-thread-sanitizer Github Actions
test-ubuntu-c-glib Github Actions
test-ubuntu-default-docs Azure
test-ubuntu-ruby Github Actions
ubuntu-bionic-amd64 Github Actions
ubuntu-bionic-arm64 TravisCI
ubuntu-focal-amd64 Github Actions
ubuntu-focal-arm64 TravisCI
ubuntu-hirsute-amd64 Github Actions
ubuntu-hirsute-arm64 TravisCI
ubuntu-impish-amd64 Github Actions
ubuntu-impish-arm64 TravisCI
wheel-macos-big-sur-cp310-arm64 Github Actions
wheel-macos-big-sur-cp310-universal2 Github Actions
wheel-macos-big-sur-cp38-arm64 Github Actions
wheel-macos-big-sur-cp39-arm64 Github Actions
wheel-macos-big-sur-cp39-universal2 Github Actions
wheel-macos-high-sierra-cp310-amd64 Github Actions
wheel-macos-high-sierra-cp36-amd64 Github Actions
wheel-macos-high-sierra-cp37-amd64 Github Actions
wheel-macos-high-sierra-cp38-amd64 Github Actions
wheel-macos-high-sierra-cp39-amd64 Github Actions
wheel-macos-mavericks-cp310-amd64 Github Actions
wheel-macos-mavericks-cp36-amd64 Github Actions
wheel-macos-mavericks-cp37-amd64 Github Actions
wheel-macos-mavericks-cp38-amd64 Github Actions
wheel-macos-mavericks-cp39-amd64 Github Actions
wheel-manylinux2010-cp310-amd64 Github Actions
wheel-manylinux2010-cp36-amd64 Github Actions
wheel-manylinux2010-cp37-amd64 Github Actions
wheel-manylinux2010-cp38-amd64 Github Actions
wheel-manylinux2010-cp39-amd64 Github Actions
wheel-manylinux2014-cp310-amd64 Github Actions
wheel-manylinux2014-cp310-arm64 TravisCI
wheel-manylinux2014-cp36-amd64 Github Actions
wheel-manylinux2014-cp36-arm64 TravisCI
wheel-manylinux2014-cp37-amd64 Github Actions
wheel-manylinux2014-cp37-arm64 TravisCI
wheel-manylinux2014-cp38-amd64 Github Actions
wheel-manylinux2014-cp38-arm64 TravisCI
wheel-manylinux2014-cp39-amd64 Github Actions
wheel-manylinux2014-cp39-arm64 TravisCI
wheel-windows-cp310-amd64 Github Actions
wheel-windows-cp36-amd64 Github Actions
wheel-windows-cp37-amd64 Github Actions
wheel-windows-cp38-amd64 Github Actions
wheel-windows-cp39-amd64 Github Actions

@lidavidm
Copy link
Member

lidavidm commented Dec 8, 2021

@kou Sorry to trouble you, but would you be able to look over the CMake changes here? I'm not sure if the changes to ArrowConfig.cmake.in are strictly correct.

Copy link
Member

@kou kou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lidavidm No problem. :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know why this is needed.
Is there a use-case that uses arrow_bundled_dependencies without arrow_static?

BTW, indent for this code is broken.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, the problem here is the order of libraries to the linker. As described above, currently, the order is OpenSSL, then libarrow_bundled_dependencies, so linking will fail because libarrow_bundled_dependencies itself also depends on OpenSSL. Adding this gets CMake to repeat OpenSSL after libarrow_bundled_dependencies and then the linker will find the necessary symbols.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. Then we should list OpenSSL in INTERFACE_LINK_LIBRARIES of arrow_bundled_dependencies not arrow_static and INTERFACE_LINK_LIBRARIES of arrow_static should list only arrow_bundled_dependencies something like this:

diff --git a/cpp/src/arrow/ArrowConfig.cmake.in b/cpp/src/arrow/ArrowConfig.cmake.in
index 6209baeec..ac2b9a027 100644
--- a/cpp/src/arrow/ArrowConfig.cmake.in
+++ b/cpp/src/arrow/ArrowConfig.cmake.in
@@ -38,6 +38,7 @@ set(ARROW_LIBRARY_PATH_SUFFIXES "@ARROW_LIBRARY_PATH_SUFFIXES@")
 set(ARROW_INCLUDE_PATH_SUFFIXES "@ARROW_INCLUDE_PATH_SUFFIXES@")
 set(ARROW_SYSTEM_DEPENDENCIES "@ARROW_SYSTEM_DEPENDENCIES@")
 set(ARROW_BUNDLED_STATIC_LIBS "@ARROW_BUNDLED_STATIC_LIBS@")
+set(ARROW_STATIC_INSTALL_INTERFACE_LIBS "@ARROW_STATIC_INSTALL_INTERFACE_LIBS@")
 
 include("${CMAKE_CURRENT_LIST_DIR}/ArrowOptions.cmake")
 
@@ -79,14 +80,9 @@ if(NOT (TARGET arrow_shared OR TARGET arrow_static))
         PROPERTIES
           IMPORTED_LOCATION
           "${arrow_lib_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}"
+          INTERFACE_LINK_LIBRARIES
+          "${ARROW_STATIC_INSTALL_INTERFACE_LIBS}"
         )
-
-      get_property(arrow_static_interface_link_libraries
-                  TARGET arrow_static
-                  PROPERTY INTERFACE_LINK_LIBRARIES)
-      set_target_properties(
-        arrow_static PROPERTIES INTERFACE_LINK_LIBRARIES
-        "${arrow_static_interface_link_libraries};arrow_bundled_dependencies")
     endif()
   endif()
 endif()
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
index 5736c557b..66a24fbfc 100644
--- a/cpp/src/arrow/CMakeLists.txt
+++ b/cpp/src/arrow/CMakeLists.txt
@@ -526,6 +526,9 @@ endif()
 
 if(ARROW_BUILD_BUNDLED_DEPENDENCIES)
   string(APPEND ARROW_PC_LIBS_PRIVATE " -larrow_bundled_dependencies")
+  set(ARROW_STATIC_INSTALL_INTERFACE_LIBS_REAL "arrow_bundled_dependencies")
+else()
+  set(ARROW_STATIC_INSTALL_INTERFACE_LIBS_REAL ${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
 endif()
 # Need -latomic on Raspbian.
 # See also: https://issues.apache.org/jira/browse/ARROW-12860
@@ -557,7 +560,7 @@ add_arrow_lib(arrow
               SHARED_INSTALL_INTERFACE_LIBS
               ${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
               STATIC_INSTALL_INTERFACE_LIBS
-              ${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
+              ${ARROW_STATIC_INSTALL_INTERFACE_LIBS_REAL})
 
 add_dependencies(arrow ${ARROW_LIBRARIES})
 

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we create a one-linear(?) to collect this list like https://github.com/apache/arrow/blob/master/cpp/cmake_modules/ThirdpartyToolchain.cmake#L2659-L2667 ?

It may be better that we have a shell script that generates the list and include it from this file:

# cpp/build-support/list-grpc-absl-libraries.sh
...
echo "set(GRPC_GPR_ABSL_LIBRARIES absl::...)"
$ cpp/build-support/list-grpc-absl-libraries.sh > cpp/cmake_modules/gRPCVariables.cmake
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 66d04acae..36565fdbf 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -3475,14 +3475,7 @@ macro(build_grpc)
                         PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_UPB}"
                                    INTERFACE_INCLUDE_DIRECTORIES "${GRPC_INCLUDE_DIR}")
 
-  set(GRPC_GPR_ABSL_LIBRARIES
-      absl::base
-      absl::statusor
-      absl::status
-      absl::cord
-      absl::strings
-      absl::synchronization
-      absl::time)
+  include(gRPCVariables)
   add_library(gRPC::gpr STATIC IMPORTED)
   set_target_properties(gRPC::gpr
                         PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_GPR}"

@rok rok force-pushed the ARROW-14708 branch 3 times, most recently from a87ae67 to 7d55e3c Compare December 9, 2021 15:06
@rok
Copy link
Member Author

rok commented Dec 9, 2021

Thanks for the feedback @kou and @lidavidm! I've moved things around as suggested. My cmake skills are lacking.

I've also added a shell script to extract the gRPCVariables. It extracts Abseil and gRPC dependencies at the moment, but I am not sure about it's correctness. Could one of you please take a look and suggest improvements if needed?

@rok rok force-pushed the ARROW-14708 branch 3 times, most recently from 1c9e45d to 9c13c18 Compare December 9, 2021 19:29
@rok
Copy link
Member Author

rok commented Dec 9, 2021

I'm getting:

CMake Error: install(EXPORT "arrow_targets" ...) includes target "arrow_static" which requires target "arrow_bundled_dependencies" that is not in any export set.

When running:

cmake -DARROW_DEPENDENCY_SOURCE=BUNDLED ..

I'll continue tomorrow but would appreciate pointers :)

@lidavidm
Copy link
Member

lidavidm commented Dec 9, 2021

Just a thought, maybe the create_merged_static_lib call needs to be moved before add_arrow_lib so that it exists before we use it?

@kou
Copy link
Member

kou commented Dec 9, 2021

Ah, it seems that we also need to specify arrow_bundled_dependencies to install(TARGETS arrow_static) something like the following:

diff --git a/cpp/cmake_modules/BuildUtils.cmake b/cpp/cmake_modules/BuildUtils.cmake
index 38c35d7e7..b88768790 100644
--- a/cpp/cmake_modules/BuildUtils.cmake
+++ b/cpp/cmake_modules/BuildUtils.cmake
@@ -240,7 +240,9 @@ function(ADD_ARROW_LIB LIB_NAME)
       DEPENDENCIES
       SHARED_INSTALL_INTERFACE_LIBS
       STATIC_INSTALL_INTERFACE_LIBS
-      OUTPUT_PATH)
+      OUTPUT_PATH
+      SHARED_INSTALL_EXTRA_TARGETS
+      STATIC_INSTALL_EXTRA_TARGETS)
   cmake_parse_arguments(ARG
                         "${options}"
                         "${one_value_args}"
@@ -396,7 +398,7 @@ function(ADD_ARROW_LIB LIB_NAME)
                                                                    "${_lib_install_name}")
     endif()
 
-    install(TARGETS ${LIB_NAME}_shared ${INSTALL_IS_OPTIONAL}
+    install(TARGETS ${LIB_NAME}_shared ${ARG_SHARED_INSTALL_EXTRA_TARGETS} ${INSTALL_IS_OPTIONAL}
             EXPORT ${LIB_NAME}_targets
             RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
             LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -451,7 +453,7 @@ function(ADD_ARROW_LIB LIB_NAME)
                             "$<BUILD_INTERFACE:${ARG_STATIC_LINK_LIBS}>")
     endif()
 
-    install(TARGETS ${LIB_NAME}_static ${INSTALL_IS_OPTIONAL}
+    install(TARGETS ${LIB_NAME}_static ${ARG_STATIC_INSTALL_EXTRA_TARGETS} ${INSTALL_IS_OPTIONAL}
             EXPORT ${LIB_NAME}_targets
             RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
             LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -464,7 +466,7 @@ function(ADD_ARROW_LIB LIB_NAME)
     arrow_install_cmake_find_module("${ARG_CMAKE_PACKAGE_NAME}")
 
     set(TARGETS_CMAKE "${ARG_CMAKE_PACKAGE_NAME}Targets.cmake")
-    install(EXPORT ${LIB_NAME}_targets
+    install(EXPORT ${LIB_NAME}_targets ${ARG_CMAKE_
             FILE "${TARGETS_CMAKE}"
             DESTINATION "${ARROW_CMAKE_INSTALL_DIR}")
 
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
index 5736c557b..07520d919 100644
--- a/cpp/src/arrow/CMakeLists.txt
+++ b/cpp/src/arrow/CMakeLists.txt
@@ -557,7 +557,9 @@ add_arrow_lib(arrow
               SHARED_INSTALL_INTERFACE_LIBS
               ${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
               STATIC_INSTALL_INTERFACE_LIBS
-              ${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
+              ${ARROW_STATIC_INSTALL_INTERFACE_LIBS}
+              STATIC_EXTRA_TARGETS
+              arrow_bundled_dependencies)
 
 add_dependencies(arrow ${ARROW_LIBRARIES})
 

Or we can add install(TARGETS arrow_bundled_dependencies EXPORT arrow_targets ...) separately.

Do you want me to take this up?

@rok
Copy link
Member Author

rok commented Dec 9, 2021

@kou thanks for the pointers!
I've pushed the change you proposed and hit another error (below). If you can spare time on this I'd be thankful but it's also a nice learning opportunity for me in case you're busy :).

 -Wall -fno-semantic-interposition -msse4.2 
CMake Error at cmake_modules/BuildUtils.cmake:469 (install):
  install EXPORT given unknown argument "ArrowTargets.cmake".
Call Stack (most recent call first):
  src/arrow/CMakeLists.txt:539 (add_arrow_lib)


-- Creating bundled static library target arrow_bundled_dependencies at /home/rok/Documents/repos/arrow/cpp/build/release/libarrow_bundled_dependencies.a
CMake Error at cmake_modules/BuildUtils.cmake:469 (install):
  install EXPORT given unknown argument "ArrowTestingTargets.cmake".
Call Stack (most recent call first):
  src/arrow/CMakeLists.txt:601 (add_arrow_lib)


CMake Error at cmake_modules/BuildUtils.cmake:469 (install):
  install EXPORT given unknown argument "ArrowDatasetTargets.cmake".
Call Stack (most recent call first):
  src/arrow/dataset/CMakeLists.txt:51 (add_arrow_lib)


-- Found Python3: /home/rok/miniconda3/envs/pyarrow-dev/bin/python3.7 (found version "3.7.12") found components: Interpreter Development NumPy Development.Module Development.Embed 
CMake Error at cmake_modules/BuildUtils.cmake:469 (install):
  install EXPORT given unknown argument "ArrowPythonTargets.cmake".
Call Stack (most recent call first):
  src/arrow/python/CMakeLists.txt:70 (add_arrow_lib)


CMake Error at cmake_modules/BuildUtils.cmake:469 (install):
  install EXPORT given unknown argument "ParquetTargets.cmake".
Call Stack (most recent call first):
  src/parquet/CMakeLists.txt:240 (add_arrow_lib)

@rok
Copy link
Member Author

rok commented Jan 21, 2022

@github-actions crossbow submit -g nightly

@github-actions
Copy link

Revision: aed4157ff68fcde5f16a472cd689640dc624f588

Submitted crossbow builds: ursacomputing/crossbow @ actions-1422

Task Status
almalinux-8-amd64 Github Actions
almalinux-8-arm64 TravisCI
amazon-linux-2-amd64 Github Actions
centos-7-amd64 Github Actions
conda-clean Azure
conda-linux-gcc-py37-cpu-r40 Azure
conda-osx-arm64-clang-py38 Azure
conda-osx-arm64-clang-py39 Azure
conda-osx-clang-py37-r40 Azure
conda-osx-clang-py37-r41 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py37-r40 Azure
debian-bookworm-amd64 Github Actions
debian-bookworm-arm64 TravisCI
debian-bullseye-amd64 Github Actions
debian-bullseye-arm64 TravisCI
debian-buster-amd64 Github Actions
debian-buster-arm64 TravisCI
example-cpp-minimal-build-static Github Actions
example-cpp-minimal-build-static-system-dependency Github Actions
homebrew-cpp Github Actions
homebrew-r-autobrew Github Actions
java-jars Github Actions
nuget Github Actions
python-sdist Github Actions
test-build-cpp-fuzz Github Actions
test-build-vcpkg-win Github Actions
test-conda-cpp Github Actions
test-conda-cpp-valgrind Azure
test-conda-python-3.10 Github Actions
test-conda-python-3.7 Github Actions
test-conda-python-3.7-hdfs-2.9.2 Github Actions
test-conda-python-3.7-hdfs-3.2.1 Github Actions
test-conda-python-3.7-kartothek-latest Github Actions
test-conda-python-3.7-kartothek-master Github Actions
test-conda-python-3.7-pandas-0.24 Github Actions
test-conda-python-3.7-pandas-latest Github Actions
test-conda-python-3.7-spark-v3.1.2 Github Actions
test-conda-python-3.8 Github Actions
test-conda-python-3.8-hypothesis Github Actions
test-conda-python-3.8-pandas-latest Github Actions
test-conda-python-3.8-pandas-nightly Github Actions
test-conda-python-3.8-spark-v3.2.0 Github Actions
test-conda-python-3.9 Github Actions
test-conda-python-3.9-dask-latest Github Actions
test-conda-python-3.9-dask-master Github Actions
test-conda-python-3.9-pandas-master Github Actions
test-conda-python-3.9-spark-master Github Actions
test-debian-10-cpp-amd64 Github Actions
test-debian-10-cpp-i386 Github Actions
test-debian-11-cpp-amd64 Github Actions
test-debian-11-cpp-i386 Github Actions
test-debian-11-go-1.16 Azure
test-debian-11-python-3 Azure
test-debian-c-glib Github Actions
test-debian-ruby Github Actions
test-fedora-33-cpp Github Actions
test-fedora-33-python-3 Azure
test-fedora-r-clang-sanitizer Azure
test-r-arrow-backwards-compatibility Github Actions
test-r-depsource-bundled Azure
test-r-depsource-system Github Actions
test-r-devdocs Github Actions
test-r-gcc-11 Github Actions
test-r-install-local Github Actions
test-r-linux-as-cran Github Actions
test-r-linux-rchk Github Actions
test-r-linux-valgrind Azure
test-r-minimal-build Azure
test-r-offline-maximal Github Actions
test-r-offline-minimal Azure
test-r-rhub-debian-gcc-devel-lto-latest Azure
test-r-rhub-ubuntu-gcc-release-latest Azure
test-r-rocker-r-base-latest Azure
test-r-rstudio-r-base-4.1-centos7-devtoolset-8 Azure
test-r-rstudio-r-base-4.1-centos8 Azure
test-r-rstudio-r-base-4.1-focal Azure
test-r-rstudio-r-base-4.1-opensuse15 Azure
test-r-rstudio-r-base-4.1-opensuse42 Azure
test-r-ubuntu-21.04 Github Actions
test-r-versions Github Actions
test-skyhook-integration Github Actions
test-ubuntu-18.04-cpp Github Actions
test-ubuntu-18.04-cpp-release Github Actions
test-ubuntu-18.04-cpp-static Github Actions
test-ubuntu-18.04-r-sanitizer Azure
test-ubuntu-20.04-cpp Github Actions
test-ubuntu-20.04-cpp-14 Github Actions
test-ubuntu-20.04-cpp-17 Github Actions
test-ubuntu-20.04-cpp-bundled Github Actions
test-ubuntu-20.04-cpp-thread-sanitizer Github Actions
test-ubuntu-20.04-python-3 Azure
test-ubuntu-c-glib Github Actions
test-ubuntu-default-docs Azure
test-ubuntu-ruby Github Actions
ubuntu-bionic-amd64 Github Actions
ubuntu-bionic-arm64 TravisCI
ubuntu-focal-amd64 Github Actions
ubuntu-focal-arm64 TravisCI
ubuntu-hirsute-amd64 Github Actions
ubuntu-hirsute-arm64 TravisCI
ubuntu-impish-amd64 Github Actions
ubuntu-impish-arm64 TravisCI
wheel-macos-big-sur-cp310-arm64 Github Actions
wheel-macos-big-sur-cp310-universal2 Github Actions
wheel-macos-big-sur-cp38-arm64 Github Actions
wheel-macos-big-sur-cp39-arm64 Github Actions
wheel-macos-big-sur-cp39-universal2 Github Actions
wheel-macos-high-sierra-cp310-amd64 Github Actions
wheel-macos-high-sierra-cp37-amd64 Github Actions
wheel-macos-high-sierra-cp38-amd64 Github Actions
wheel-macos-high-sierra-cp39-amd64 Github Actions
wheel-macos-mavericks-cp310-amd64 Github Actions
wheel-macos-mavericks-cp37-amd64 Github Actions
wheel-macos-mavericks-cp38-amd64 Github Actions
wheel-macos-mavericks-cp39-amd64 Github Actions
wheel-manylinux2010-cp310-amd64 Github Actions
wheel-manylinux2010-cp37-amd64 Github Actions
wheel-manylinux2010-cp38-amd64 Github Actions
wheel-manylinux2010-cp39-amd64 Github Actions
wheel-manylinux2014-cp310-amd64 Github Actions
wheel-manylinux2014-cp310-arm64 TravisCI
wheel-manylinux2014-cp37-amd64 Github Actions
wheel-manylinux2014-cp37-arm64 TravisCI
wheel-manylinux2014-cp38-amd64 Github Actions
wheel-manylinux2014-cp38-arm64 TravisCI
wheel-manylinux2014-cp39-amd64 Github Actions
wheel-manylinux2014-cp39-arm64 TravisCI
wheel-windows-cp310-amd64 Github Actions
wheel-windows-cp37-amd64 Github Actions
wheel-windows-cp38-amd64 Github Actions
wheel-windows-cp39-amd64 Github Actions

@rok rok force-pushed the ARROW-14708 branch 2 times, most recently from cc1b7a1 to 85c9208 Compare January 22, 2022 00:08
@rok rok force-pushed the ARROW-14708 branch 2 times, most recently from f632d02 to 89bd9b4 Compare March 7, 2022 18:25
@rok
Copy link
Member Author

rok commented Mar 7, 2022

@lidavidm Implemented your suggestions and added a workaround for the abseil issue on macOS.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still confused here, now the arguments were added back but we don't use them?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't work on non-Apple platforms will it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this branch at all? Presumably absl::time's deps are correct on non-Apple platforms and we don't need to overwrite them?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, that shouldn't be there.

Copy link
Member Author

@rok rok Mar 7, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure about absl::time's deps on non-Apple so leaving that branch as is.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this end with -Wl,--no-force-load or something?

Related, does it take -force-load or --force-load?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So all_load/noall_load currently won't work due to symbol duplication so force-load is the only option and there appears to be no noforce-load option.
More here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this back to NOT? I feel like it flip-flops on every commit…was there a rebase error or something? It might be easier to squash current commits if needed

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh, sorry. I was switching back and forth between linux and mac to fix the mac issue and probably caused this. I'll squash later today.

@rok rok force-pushed the ARROW-14708 branch 2 times, most recently from 27e3cd0 to f525cd6 Compare March 7, 2022 19:51
@rok
Copy link
Member Author

rok commented Mar 7, 2022

@lidavidm thanks for your patience. I've pushed another change with your suggestions.

@rok rok requested a review from lidavidm March 7, 2022 22:32
Comment on lines 242 to 243
STATIC_INSTALL_INTERFACE_LIBS
OUTPUT_PATH)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, did you mean to remove this parameter?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored.

)

INTERFACE_LINK_LIBRARIES
${ARROW_STATIC_INSTALL_INTERFACE_LIBS}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be quoted.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Member

@lidavidm lidavidm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Things work for me now.

@rok
Copy link
Member Author

rok commented Mar 7, 2022

Sorry for the rebasing mess @lidavidm ! :)

endif()

if(ARROW_BUILD_BUNDLED_DEPENDENCIES)
string(APPEND ARROW_PC_LIBS_PRIVATE " -larrow_bundled_dependencies")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this removed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returned.

${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
STATIC_INSTALL_INTERFACE_LIBS
${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
STATIC_INSTALL_INTERFACE_LIBS)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove STATIC_INSTALL_INTERFACE_LIBS?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems so. Changed.


if(ARROW_BUILD_BUNDLED_DEPENDENCIES)
string(APPEND ARROW_PC_LIBS_PRIVATE " -larrow_bundled_dependencies")
set(ARROW_STATIC_INSTALL_INTERFACE_LIBS_REAL ${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need _REAL alias?
Is there any problem if we use ARROW_STATIC_INSTALL_INTERFACE_LIBS directly?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing _REAL. It works for me locally, waiting or tests.

@rok
Copy link
Member Author

rok commented Mar 8, 2022

@kou thank you for the review! I've pushed suggested changes.

Copy link
Member

@kou kou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Thanks!

@kou kou closed this in 2fea818 Mar 8, 2022
@ursabot
Copy link

ursabot commented Mar 8, 2022

Benchmark runs are scheduled for baseline = 5772d65 and contender = 2fea818. 2fea818 is a master commit associated with this PR. Results will be available as each benchmark for each run completes.
Conbench compare runs links:
[Finished ⬇️0.0% ⬆️0.0%] ec2-t3-xlarge-us-east-2
[Finished ⬇️0.38% ⬆️0.34%] test-mac-arm
[Finished ⬇️0.36% ⬆️0.0%] ursa-i9-9960x
[Finished ⬇️0.13% ⬆️0.13%] ursa-thinkcentre-m75q
Supported benchmarks:
ec2-t3-xlarge-us-east-2: Supported benchmark langs: Python. Runs only benchmarks with cloud = True
test-mac-arm: Supported benchmark langs: C++, Python, R
ursa-i9-9960x: Supported benchmark langs: Python, R, JavaScript
ursa-thinkcentre-m75q: Supported benchmark langs: C++, Java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants